da42541971f2200aec2ba483019637cc23efbeec,spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/derived/DerivedGraphRepositoryQuery.java,CountByQuery,execute,#Object[]#,92
Before Change
@Override
public Object execute(Object[] parameters) {
Class<?> domainClass = info.getJavaType();
if (getQueryMethod().getReturnedObjectType().equals(Long.class)) {
String label = ((Neo4jSession) session).metaData().classInfo(domainClass.getName()).neo4jName();
Filters filters = resolveParams(parameters);
// TODO? create a specific implementation, e.g. CountQuery().findByProperties(label, filters)
AbstractRequest query = new VariableDepthQuery().findByProperties(label, filters, 0);
String statement = query.getStatement().replace("RETURN n", "RETURN COUNT(n)");
Result result = session.query(statement, query.getParameters());
Map<String, Object> resultMap = result.iterator().next();
return Long.parseLong(resultMap.get("COUNT(n)").toString());
} else {
throw new RuntimeException("Count queries must return a Long");
}
After Change
if (getQueryMethod().getReturnedObjectType().equals(Long.class)) {
Filters filters = resolveParams(parameters);
return session.count(info.getJavaType(), filters);
} else {
throw new RuntimeException("Long is required as the return type of a Count query");
}